package br.com.vacine.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import android.annotation.SuppressLint;
import br.com.vacine.ListaCartaoActivity;

public class ValidarCamposUtil {

	@SuppressLint("SimpleDateFormat")
	public static Float getIdade(String nascimento) throws ParseException {
		
		SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");  
		Date dateString = new Date(format.parse(nascimento).getTime());
		
	    Calendar cn = Calendar.getInstance();
	    cn.setTime(dateString);
	 
	    Date dataAtual = new Date(System.currentTimeMillis());
	    Calendar ca = Calendar.getInstance();
	    ca.setTime(dataAtual);
	 
	    float idade = ca.get(Calendar.YEAR) - cn.get(Calendar.YEAR);
	    if (ca.get(Calendar.MONTH) < cn.get(Calendar.MONTH)) {
	        idade--;
	    } else if (ca.get(Calendar.MONTH) == cn.get(Calendar.MONTH)) {
	        if (ca.get(Calendar.DAY_OF_MONTH) < cn.get(Calendar.DAY_OF_MONTH))
	            idade--;
	    }
	    return idade;
	}
	
	 public static boolean validaData(String data) {  
	        GregorianCalendar calendar =  new GregorianCalendar();     
	        int dia = 0,mes = 0,ano = 0;  
	        try {
	        	String diaStr = data.substring(0,2);  
	        	String mesStr = data.substring(3,5);  
	        	String anoStr = data.substring(6,10);  			



	        	try {  
	        		dia = Integer.parseInt(diaStr);  
	        		mes = Integer.parseInt(mesStr);  
	        		ano = Integer.parseInt(anoStr);  
	        	} catch (Exception e) {  
	        		return false;  
	        	}  

	        } catch (Exception e) {
	        	// TODO: handle exception
	        	return false;
	        }        
	        if (dia < 1 || mes < 1 || ano < 1)  
	            return false;  
	        else  
	            if (mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12)  
	                if (dia <= 31)  
	                    return true;  
	                else  
	                    return false;  
	            else  
	                if (mes == 4 || mes == 6 || mes == 9 || mes == 11)  
	                    if (dia <= 30)  
	                        return true;  
	                    else  
	                        return false;  
	                else  
	                    if (mes == 2)  
	                        if (calendar.isLeapYear(ano))  
	                            if (dia <= 29)  
	                                return true;  
	                            else  
	                                return false;  
	                        else  
	                            if (dia <= 28)  
	                                return true;  
	                            else  
	                                return false;  
	                    else   
	                        if (mes > 12)  
	                            return false;  
	        return true;  
	    }  


	public static boolean validaFormatoEmail(String email) {

        String ePattern = "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$";
        Pattern p = Pattern.compile(ePattern);
        Matcher m = p.matcher(email);
        return m.matches();

  }
	
	public static boolean isValidaData(String data) throws ParseException {
		
		SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");  
		Date dateString = new Date(format.parse(data).getTime());  
		
		Date dataAtual = new Date();
		if(dateString != null){
			if(dateString.before(dataAtual)){
				return true;
			}
		}
		
		return false;
	}
	
	public static boolean isVerificaUsuario(){
		
		if(ListaCartaoActivity.getAuxiliar() != false){
			return true;
		}else{
			return false;
			}
	}

	
}
